As software-controlled devices become increasingly important in many diverse fields of application, the difficulties associated with modifying the software that controls these devices is becoming increasingly troublesome. The need to modify software arises from a variety of situations such as: (1) the software does not operate correctly due to some deficiency in design or implementation, often referred to as a "bug"; (2) the needs of the application in which the software operates have changed, therefore the software must be modified, enhanced, or replaced in order to service the changed needs; or (3) new software is available which provides new features or which services an application more efficiently.
Modifications to software are placed into effect by a procedure referred to herein as an "installation." A particular embodiment of software is referred to herein as a "version" of the software. Thus, modifying or replacing a particular embodiment of software with a different embodiment is referred to as installing a different version of the software.
A later version of software which comprises corrections to bugs or a version which includes additional features is referred to herein as an "upgrade" and the installation of such a version is referred to as "upgrading" the software. Likewise, a former version of software or a version which comprises fewer features is referred to as a "downgrade" and the installation of such a version is referred to as "downgrading" the software.
It should be understood that, as used herein, the term "software" refers to all computer programs regardless of their embodiment. A distinction is sometimes made in the art between "software" which may be loaded directly into computer read/write memory and "firmware" which is embodied in Read Only Memory (ROM). No such distinction is made herein; the term "software" includes both types of computer programs. When necessary, firmware will be distinguished by terms such as "ROM-based software."
With the advent of microprocessor-based personal computers, installing new versions of software is a commonplace experience. This experience illustrates two principal difficulties associated with modifying software: performing the installation itself, and distributing the materials necessary to perform the installation.
Performing software installations is frequently troublesome because it often requires skills not normally possessed by the "end user" of the software product, or it demands time and/or expense which the end user does not wish to expend. The end user is sometimes required to provide critical information such as what type of equipment the installed software is to support, and to elect various options which customize the software's operation according to the end user's preferences.
By improving the sophistication of installation procedures, software developers have reduced the amount of end-user intervention required but some intervention is still generally required to decide at least whether the installation is to take place. End-user intervention is undesirable because it is inconvenient to the end user and because it also introduces an opportunity for mistakes which may invalidate the installation.
Distributing installation materials is difficult because of a host of administrative and logistical problems. The provider of the installation materials must know, for example, who needs the materials, what materials are needed, where and when the materials are needed, and the skill and training levels of the person expected to perform the installation. The responsibility to insure the provider has this knowledge can be placed upon the end user by requiring the end user to request the desired materials, upon the provider of the materials, or it can be shared.
It may be reasonable, for example, to expect an end user to request installation materials for a later version of word processing software which he or she wishes to install only because it has desirable new features.
It is not as reasonable, however, to expect an end user to assume responsibility for requesting installation materials to upgrade ROM-based software in a microprocessor-controlled Compact Disk (CD) player. The average end user probably will not even realize that the CD player is controlled by software. Responsibility must, therefore, fall upon the provider of the installation materials, but unless the provider has accurate records showing who uses which products, distribution of installation materials is difficult at best. Of course, even if the materials can be distributed, the installation itself may be essentially impossible for the end user to perform.
These two difficulties are readily apparent during development of a product such as the CD player mentioned above. During early product development, software is particularly volatile and requires frequent modification. Installation of a new software version entails either replacing the current ROM integrated circuits or "chips" with new ROM chips embodying the new version, or altering the contents of the current ROM chips if the chips are "programmable."
During later development phases, products are commonly subjected to "Beta testing" at locations geographically removed from product developers. The need to modify software continues, but such modifications become more difficult; replacing or reprogramming ROM chips is not normally within the capabilities of the average end user. The end user is normally dependent upon the product developer to install different versions of ROM-based software. The end user is usually required to take the product out of service and deliver it to the manufacturer or an authorized agent who installs new software. This procedure is costly and inconvenient, and perhaps even impossible if the end user cannot afford to take the product out of service.
Because of the difficulties involved with the distribution of installation materials and with the performing of the installation itself, the manufacturer of a CD player, for example, cannot reasonably require an end user to use conventional methods to install different software versions to play particular Compact Disks or particular selections on a Compact Disk. But the ability to install a different software version for each disk or selection offers some attractive advantages.
First, the operating characteristics of the CD player can be altered to accommodate, for example, changes in Compact Disk recording formats. Assuming that format changes are compatible with physical components or "hardware," a CD player can be manufactured now which will be able to play back disks encoded according to some future format not yet defined provided a suitable version of software not yet developed is installed in the CD player.
Similarly, a future playback system can be adapted to play back a disk with an older format provided a suitable version of software is installed. This illustrates an important concept: installations may downgrade as well as upgrade software.
Second, performance of a CD player can be optimized for each disk or selection. The producer of a Compact Disk can incorporate features or special effects not normally needed but which can enhance the playback of the particular disk or selection.
These advantages apply to a wide range of software-controlled "presentation system" products such as cinema soundtrack playback systems, audio-tape and audio-cassette-tape recorders, video-tape and video-cassette-tape recorders, and radio and television receivers. In general, a "presentation system" product receives one or more input signals comprising "presentation material" and processes that material to generate output signals which, in combination with suitable transducers, produce one or more perceptual stimuli such as sounds, visual images, odors, flavors, or touch.
The realization of the advantages discussed above depends upon the ability to provide for automatic installation of software without end user intervention and for automatic distribution of materials required for such an installation.